package com.jobs.producer0.config;

import org.springframework.amqp.core.*;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 废弃，在消费者里面进行定义。
 */
// @Configuration
public class DirectConfiguration {

    @Bean    //创建DirectExchange交换机 以下是两种方法 进行创建
    public DirectExchange directExchange(){
        //参数就是 ： 交换机的名称
//        ExchangeBuilder.fanoutExchange("maxxub.direct").build();  //使用Builder进行创建交换机
        return new DirectExchange("maxxub.direct");
    }

    @Bean   //创建  队列
    public Queue directQueue3(){
        //填写参数就是 ： 队列名称
//        QueueBuilder.durable("direct.queue1").build();
        return new Queue("direct.queue1");
    }

    @Bean    //进行交换机和队列的绑定 同时添加上路由
    public Binding directBinding1(Queue directQueue3, DirectExchange directExchange){
        //解释 ： BindingBuilder bind（绑定）directQueue3队列 to（到）directExchange with（带上路由）red
        return BindingBuilder.bind(directQueue3).to(directExchange).with("red");
    }
    @Bean
    public Binding directBinding2(Queue directQueue3,DirectExchange directExchange){
        //解释 ： BindingBuilder bind（绑定）directQueue3队列 to（到）directExchange with（带上路由）blue
        return BindingBuilder.bind(directQueue3).to(directExchange).with("blue");
    }


    @Bean
    public Queue directQueue4(){
//        QueueBuilder.durable("direct.queue2").build();
        return new Queue("direct.queue2");
    }

    @Bean
    public Binding directBinding4(){
        //可以直接调用方法 于上面是雷同的，交换机一个就够了，这里再给交换机绑定队列和路由就行了
        return BindingBuilder.bind(directQueue4()).to(directExchange()).with("red");
    }
    @Bean
    public Binding directBinding3(){
        //可以直接调用方法
        return BindingBuilder.bind(directQueue4()).to(directExchange()).with("yellow");
    }

}
